# 代码所有：cxw
# 开发时间：2021/10/30 20:36

"""
 根据这一定理可以采用函数嵌套调用和递归调用进行求两个数的最大公约数和最小公倍数,现分别叙述如下：

       ①函数嵌套调用

       求最大公约数：

       其算法过程为：设两数为a,b设其中a 做被除数,b做除数，temp为余数

       1、大数放a中、小数放b中；

       2、求a/b的余数；

       3、若temp=0则b为最大公约数；

       4、如果temp!=0则把b的值给a、temp的值给b；

       5、返回第二步；

       求最小公倍数：

       一个简单的方法直接求：a*b/最大公约数
"""
#辗转相除法
'''
a=int(input())
b=int(input())
def div(a,b):
    if a<b:
        temp=a
        a=b
        b=temp
    while b!=0:
        temp=a%b
        a=b
        b=temp
    return a
def mutiple(a,b):
    temp=div(a,b)
    return (a*b)/temp
s=div(a,b)
x=mutiple(a,b)
print("最大公约数",s,end="\n")
print("最大公倍数",x)
'''
#穷举法
a=int(input())
b=int(input())
#可使用for in 循环和while循环实现
'''
def div(a,b):
    temp=a if a<b else b
    while temp!=0:
        if a%temp==0 and b%temp==0:
            break
        temp-=1
    return temp
'''
# if a<b:
#     a,b=b,a
# def div(a,b):
#     for i in range(b,0,-1):
#         if a%i==0 and b%i==0:
#             break
#     return i
##使用递归
def div(a,b):
    if a%b!=0:
        return b
    else:
        return div(b,a%b)
def mutiple(a,b):
    temp=div(a,b)
    return (a*b)/temp
x=mutiple(a,b)
s=div(a,b)
print("最大公约数",s,end="\n")
print("最大公倍数",x)


